﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using SistemaPetShop.Negocio;

namespace SistemaPetShop.Forms
{
    public partial class cadCliente : Form
    {
        Cliente cliente = new Cliente();
        Animal animal = new Animal();
        Int32 idClienteAnimal;

        public cadCliente()
        {
            InitializeComponent();
            desabilitaTelaCadastro();
            carregarCliente();
            carregaAnimal();
        }
        
        private void carregarCliente()
        {
            GridViewCliente.DataSource = cliente._ListaCliente();
        }

        public Int32 selecionaIdCliente()
        {
            idClienteAnimal = Convert.ToInt32(GridViewCliente.CurrentRow.Cells[0].Value);
            return idClienteAnimal;
        }

        private void carregaFoto()
        {
            Int32 idAnimal = -1;

            if (dataGridViewAnimal.SelectedRows.Count >= 1)
            {
                idAnimal = Convert.ToInt32(dataGridViewAnimal.CurrentRow.Cells[0].Value);
                String caminho = animal._ConsultaFoto(idAnimal);
                caminho = caminho.Replace("/", "\\");
                pictureBox1.ImageLocation = caminho.ToString();
            }
            else
            {
                pictureBox1.ImageLocation = "0";
            }

        }

        private void carregaAnimal()
        {
            if (GridViewCliente.SelectedRows.Count >= 1)
            {
            dataGridViewAnimal.DataSource = animal._ListaAnimal(Convert.ToInt32(GridViewCliente.CurrentRow.Cells[0].Value));
            carregaFoto();

                
            }
        }

        private void cadCliente_Load(object sender, EventArgs e)
        {

        }

        private void btnNovo_Click(object sender, EventArgs e)
        {
            limpaTelaCadastro();
            desabilitarBotoes();
            habilitaTelaCadastro();
            tabControl1.SelectedTab = tabPage2;
        }

        private void desabilitarBotoes()
        {
            btnNovo.Visible = false;
            btnEditar.Visible = false;
            btnExcluir.Visible = false;
            btnSair.Visible = false;
            btnIncluirAnimal.Enabled = false;
            btnApagarAnimal.Enabled = false;
            btnSalvar.Visible = true;
            btnCancelar.Visible = true;
        }

        private void habilitaBotoes()
        {
            btnNovo.Visible = true;
            btnEditar.Visible = true;
            btnExcluir.Visible = true;
            btnSair.Visible = true;
            btnIncluirAnimal.Enabled = true;
            btnApagarAnimal.Enabled = true;
            btnSalvar.Visible = false;
            btnCancelar.Visible = false;
        }

        private void desabilitaTelaCadastro()
        {
            txtBairro.Enabled = false;
            txtCep.Enabled = false;
            txtCidade.Enabled = false;
            txtEstado.Enabled = false;
            txtLogradouro.Enabled = false;
            txtNumero.Enabled = false;
            txtobservacoes.Enabled = false;
            cbotLogradouro.Enabled = false;
            txttelefone1.Enabled = false;
            txttelefone2.Enabled = false;
            txtcelular.Enabled = false;
            cboOperadora.Enabled = false;
            btnPesquisaCep.Enabled = false;
            txtNome.Enabled = false;
        }

        private void habilitaTelaCadastro()
        {
            txtBairro.Enabled = true;
            txtCep.Enabled = true;
            txtCidade.Enabled = true;
            txtEstado.Enabled = true;
            txtLogradouro.Enabled = true;
            txtNumero.Enabled = true;
            txtobservacoes.Enabled = true;
            cbotLogradouro.Enabled = true;
            txttelefone1.Enabled = true;
            txttelefone2.Enabled = true;
            txtcelular.Enabled = true;
            cboOperadora.Enabled = true;
            btnPesquisaCep.Enabled = true;
            txtNome.Enabled = true;
        }

        private void limpaTelaCadastro()
        {
            txtBairro.BackColor = System.Drawing.Color.White;
            txtCep.BackColor = System.Drawing.Color.White;
            txtCidade.BackColor = System.Drawing.Color.White;
            txtEstado.BackColor = System.Drawing.Color.White;
            txtLogradouro.BackColor = System.Drawing.Color.White;
            txtNumero.BackColor = System.Drawing.Color.White;
            txtobservacoes.BackColor = System.Drawing.Color.White;
            cbotLogradouro.BackColor = System.Drawing.Color.White;
            txttelefone1.BackColor = System.Drawing.Color.White;
            txttelefone2.BackColor = System.Drawing.Color.White;
            txtcelular.BackColor = System.Drawing.Color.White;
            cboOperadora.BackColor = System.Drawing.Color.White;
            txtIdCliente.BackColor = System.Drawing.Color.White;
            txtNome.BackColor = System.Drawing.Color.White;
            txtBairro.Text = "";
            txtCep.Text = "";
            txtCidade.Text = "";
            txtEstado.Text = "";
            txtLogradouro.Text = "";
            txtNumero.Text = "";
            txtobservacoes.Text = "";
            cbotLogradouro.Text = "";
            txttelefone1.Text = "";
            txttelefone2.Text = "";
            txtcelular.Text = "";
            cboOperadora.Text = "";
            txtIdCliente.Text = "";
            txtNome.Text = "";
        }

        private void btnPesquisaCep_Click(object sender, EventArgs e)
        {
            string cep;

            cep = txtCep.Text.Replace("-", "");

            DataTable dt = new DataTable();
            dt = cliente._CarregarEndereco(cep);

            if (dt.Rows.Count != 0)
            {
                txtCidade.Text = dt.Rows[0]["LOC_NO"].ToString();
                txtBairro.Text = dt.Rows[0]["BAI_NO"].ToString();
                txtEstado.Text = dt.Rows[0]["UFE_SG"].ToString();
                txtLogradouro.Text = dt.Rows[0]["LOG_NO"].ToString();
                cbotLogradouro.Text = dt.Rows[0]["TLO_TX"].ToString();
            }
            else
            {
                MessageBox.Show("Cep não existe em nossa base", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
        }

        private void btnPesquisar_Click(object sender, EventArgs e)
        {
            GridViewCliente.DataSource = cliente._ListaClienteEspecifico(txtPesquisa.Text, cboTipoPesquisa.Text);
        }

        private void btnIncluirAnimal_Click(object sender, EventArgs e)
        {
            try
            {
                cadAnimal animal = new cadAnimal();
                animal.Show();
                animal.carregaIdCliente(Convert.ToInt32(GridViewCliente.CurrentRow.Cells[0].Value), GridViewCliente.CurrentRow.Cells[1].Value.ToString());

            }
            catch (Exception ex)
            {
                MessageBox.Show("Ocorreu o seguinte erro ao tentar abrir o formulario: " + ex.ToString());
            }
        }

        //private void dataGridViewAnimal_CellContentClick(object sender, DataGridViewCellEventArgs e)
        //{
        //    carregaAnimal();
        //}

        private void dataGridViewAnimal_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            carregaFoto();
        }

        private void btnSalvar_Click(object sender, EventArgs e)
        {

            try
            {
                bool vCampos = validaCamposTelaCadCliente();

                if (vCampos == false)
                {
                    MessageBox.Show("É necessário o preenchimento correto de todos os campos que estão em vermelho", "Validação de Campos", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
                }
                else
                {
                    if (txtIdCliente.Text == "")
                    {
                        bool ret = cliente._InsereCliente(txtNome.Text, txtCep.Text, cbotLogradouro.Text, txtLogradouro.Text, txtNumero.Text, txtBairro.Text, txtCidade.Text, txtEstado.Text, txttelefone1.Text, txttelefone2.Text, txtcelular.Text, cboOperadora.Text, txtobservacoes.Text);
                        if (ret == true)
                        {
                            MessageBox.Show("Cliente cadastrado com sucesso");
                        }
                        else
                        {
                            MessageBox.Show("Houve algum erro no momento da Inclusão por favor entre em contato com o Administrador do Sistema");
                        }
                    }
                    else
                    {
                        bool ret = cliente._AtualizaFornecedor(txtNome.Text, cbotLogradouro.Text, txtLogradouro.Text, txtNumero.Text, txtBairro.Text, txtCidade.Text, txtEstado.Text, txtCep.Text, txttelefone1.Text, txttelefone2.Text, txtcelular.Text, cboOperadora.Text, txtobservacoes.Text, txtIdCliente.Text);
                        if (ret == true)
                        {
                            MessageBox.Show("Cliente Atualizado com sucesso");
                        }
                        else
                        {
                            MessageBox.Show("Houve algum erro no momento da Inclusão por favor entre em contato com o Administrador do Sistema");
                        }

                    }
                    limpaTelaCadastro();
                    tabControl1.SelectedTab = tabPage1;
                    habilitaBotoes();
                    desabilitaTelaCadastro();
                    carregarCliente();


                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Verificar mensagem de erro: " + ex.Message, "Aviso de Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }

        }

        public bool validaCamposTelaCadCliente()
        {
            bool ret = true;
            if (txtNome.Text == "" || txtNome.TextLength < 5)
            {
                txtNome.BackColor = System.Drawing.Color.Red;
                ret = false;
            }
            return ret;

        }

        private void btnEditar_Click(object sender, EventArgs e)
        {
            limpaTelaCadastro();
            habilitaTelaCadastro();
            desabilitarBotoes();
            carregaTelaCadastroCliente();
            tabControl1.SelectedTab = tabPage2;
        }

        public void carregaTelaCadastroCliente()
        {
                DataTable dt = new DataTable();

                if (GridViewCliente.SelectedRows.Count >= 1)
                {
                    dt = cliente._EditarCliente(Convert.ToInt32(GridViewCliente.CurrentRow.Cells[0].Value));
                    txtNome.Text = dt.Rows[0]["nome"].ToString();
                    txtBairro.Text = dt.Rows[0]["bairro"].ToString();
                    txtcelular.Text = dt.Rows[0]["celular"].ToString();
                    txtCep.Text = dt.Rows[0]["cep"].ToString();
                    txtCidade.Text = dt.Rows[0]["cidade"].ToString();
                    txtEstado.Text = dt.Rows[0]["estado"].ToString();
                    txtIdCliente.Text = dt.Rows[0]["idCliente"].ToString();
                    txtLogradouro.Text = dt.Rows[0]["logradouro"].ToString();
                    txtNumero.Text = dt.Rows[0]["numero"].ToString();
                    txtobservacoes.Text = dt.Rows[0]["observacao"].ToString();
                    txttelefone1.Text = dt.Rows[0]["telefone1"].ToString();
                    txttelefone2.Text = dt.Rows[0]["telefone2"].ToString();
                    txtDtCadastro.Text = dt.Rows[0]["dataCadastro"].ToString();
                    cboOperadora.Text = dt.Rows[0]["operadora"].ToString();
                    cbotLogradouro.Text = dt.Rows[0]["tipoLogradouro"].ToString();
                    
                }



        }

        private void GridViewCliente_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            if (GridViewCliente.CurrentRow.Cells[0].Value == DBNull.Value)
            {
                MessageBox.Show("Por favor selecionar um cliente válido", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Information);

            }
            else
            {
                carregaTelaCadastroCliente();
                carregaAnimal();
                //pictureBox1.ImageLocation = "0";
            }

        }

        private void btnApagarAnimal_Click(object sender, EventArgs e)
        {
            bool ret = false;
            try
            {
                if (MessageBox.Show("Deseja Apagar este Registro", "Aviso", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Yes)
                {
                    ret = animal._ApagaAnimal(Convert.ToInt32(dataGridViewAnimal.CurrentRow.Cells[0].Value));
                    carregaAnimal();
                    
                }

            }
            catch (Exception ex)
            {
                MessageBox.Show("Processo apresentou erro no momento da exclusão deste registro, se o problema persistir entre em contato com o Administrador do Sistema");
                throw;
            }

        }

        private void GridViewCliente_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {

        }

        private void GridViewCliente_SelectionChanged(object sender, EventArgs e)
        {
            if (GridViewCliente.CurrentRow.Cells[0].Value == DBNull.Value)
            {
                MessageBox.Show("Por favor selecionar um cliente válido", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Information);

            }
            else
            {
                carregaTelaCadastroCliente();
                carregaAnimal();
                //pictureBox1.ImageLocation = "0";
            }

        }

        private void dataGridViewAnimal_SelectionChanged(object sender, EventArgs e)
        {
            carregaFoto();
        }

        private void btnExcluir_Click(object sender, EventArgs e)
        {
            if (GridViewCliente.SelectedRows.Count >= 1)
            {
                if (MessageBox.Show("Deseja Apagar este Cliente? ","Aviso",MessageBoxButtons.YesNo,MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Yes)
                {
                    cliente._ApagaCliente(Convert.ToInt32(GridViewCliente.CurrentRow.Cells[0].Value));
                    MessageBox.Show("Cliente Excluido com Sucesso");
                    carregarCliente();
                }

            }
            else
            {
                MessageBox.Show("É necessário selecionar uma linha para excluir o Cliente", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
        }

        private void btnCancelar_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("Deseja cancelar essa Operação?","Aviso",MessageBoxButtons.YesNo,MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Yes)
            {
                limpaTelaCadastro();
                tabControl1.SelectedTab = tabPage1;
                habilitaBotoes();
                desabilitaTelaCadastro();
                carregarCliente();
                MessageBox.Show("Operação Cancelada", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            
        }

        private void btnSair_Click(object sender, EventArgs e)
        {
            this.Close();
        }






    }
}
